import java.lang.*;
import java.io.*;

public class Opdracht33
{
    public static int count = 0;

    public static void main(String[] args)
    {
            
        //declareer de char array die gebruikt wordt in het algortime.
        //Maak eveneens een main methode om de SchrijfLetterRijtjes methode te testen
        Gewichtendoos doos = new Gewichtendoos(20);
        Combinatie res = new Combinatie(20);
        doos.voegToe(1);
        doos.voegToe(2);
        doos.voegToe(3);
        doos.voegToe(4);
        doos.voegToe(5);

        System.out.println(doos);
        System.out.println(doos.aantal());
        schrijfCombinaties(doos,8);

    }

    static void schrijfCombinaties(Gewichtendoos doos, int g)
    {
        SchrijfLetterRijtjes2(doos,g);
    }

    public static void SchrijfLetterRijtjes2(Gewichtendoos k, int g)
    {
        int teller = k.aantal();
        int[] lol = new int[20];
        Combi2(k,g,lol,0,teller);
    }



    static void Combi2(Gewichtendoos k,int gewicht, int[] seq, int m,int teller )
    {
        for(int z = 0 ; z <= teller; z++)
	{
            if(z == 0)
            {
                int sum = 0;
	        for(int i = 0; i < m; i = i + 1){
                    sum += seq[i];
                }
                //Test if the sum we've found equals the the total weight
		if (sum == gewicht)
		{
                    //This part of the code checks if the array contains
                    //a sequence which is either strictly increasing or
                    //strictly decreasing
                    int previous = 0;
                    boolean bool = true;
                    int previous2 = gewicht + 1;
                    boolean bool2 = true;
                    for(int b = 0; b < m; b++)
                    {
                        if(seq[b] <= previous){
                            bool = false;
                        }
                        previous = seq[b];
                    }
                    for(int b = 0; b < m; b++)
                    {
                        if(seq[b] >= previous2){
                            bool2 = false;
                        }
                        previous2 = seq[b];
                    }
                    if(bool || bool2){
                        for(int b = 0; b < m; b++)
                        {
                            if(b < (m - 1))
                                System.out.print(seq[b] + ",");
                            else System.out.print(seq[b]);
                        }
                        System.out.println();
                    }
                }
	
            }

            else{
                for (int i = 0 ; !(i > (z -1)); i++)
		{
                    seq[m] = k.get(i);
                    m = m + 1;
                    Combi2(k, gewicht, seq, m,z - 1 );
                    m = m - 1;
		}
            }
        }
    }
}